home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_normalization.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  3KB  |  100 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. from test.test_support import verbose, TestFailed, TestSkipped, verify
  5. import sys
  6. import os
  7. from unicodedata import normalize
  8. TESTDATAFILE = 'NormalizationTest-3.2.0' + os.extsep + 'txt'
  9. for path in [
  10.     os.path.curdir,
  11.     os.path.pardir]:
  12.     fn = os.path.join(path, TESTDATAFILE)
  13.     skip_expected = not os.path.exists(fn)
  14.     if not skip_expected:
  15.         TESTDATAFILE = fn
  16.         break
  17.         continue
  18.  
  19.  
  20. class RangeError:
  21.     pass
  22.  
  23.  
  24. def NFC(str):
  25.     return normalize('NFC', str)
  26.  
  27.  
  28. def NFKC(str):
  29.     return normalize('NFKC', str)
  30.  
  31.  
  32. def NFD(str):
  33.     return normalize('NFD', str)
  34.  
  35.  
  36. def NFKD(str):
  37.     return normalize('NFKD', str)
  38.  
  39.  
  40. def unistr(data):
  41.     data = [ int(x, 16) for x in data.split(' ') ]
  42.     for x in data:
  43.         if x > sys.maxunicode:
  44.             raise RangeError
  45.             continue
  46.         []
  47.     
  48.     return []([ unichr(x) for x in data ])
  49.  
  50.  
  51. def test_main():
  52.     if skip_expected:
  53.         raise TestSkipped(TESTDATAFILE + ' not found, download from ' + 'http://www.unicode.org/Public/3.2-Update/' + TESTDATAFILE)
  54.     
  55.     part1_data = { }
  56.     for line in open(TESTDATAFILE):
  57.         if '#' in line:
  58.             line = line.split('#')[0]
  59.         
  60.         line = line.strip()
  61.         if not line:
  62.             continue
  63.         
  64.         if line.startswith('@Part'):
  65.             part = line
  66.             continue
  67.         
  68.         
  69.         try:
  70.             (c1, c2, c3, c4, c5) = [ unistr(x) for x in line.split(';')[:-1] ]
  71.         except RangeError:
  72.             continue
  73.  
  74.         if verbose:
  75.             print line
  76.         
  77.         None(verify if NFC(c1) == NFC(c1) and NFC(c2) == NFC(c2) else NFC(c2) == NFC(c3), line)
  78.         None(verify if NFC(c4) == NFC(c4) else NFC(c4) == NFC(c5), line)
  79.         None(verify if NFD(c1) == NFD(c1) and NFD(c2) == NFD(c2) else NFD(c2) == NFD(c3), line)
  80.         None(verify if NFD(c4) == NFD(c4) else NFD(c4) == NFD(c5), line)
  81.         c4(NFKC(c1) if NFKC(c1) == NFKC(c1) and NFKC(c2) == NFKC(c2) and NFKC(c3) == NFKC(c3) and NFKC(c4) == NFKC(c4) else NFKC(c4) == NFKC(c5), line)
  82.         c5(NFKD(c1) if NFKD(c1) == NFKD(c1) and NFKD(c2) == NFKD(c2) and NFKD(c3) == NFKD(c3) and NFKD(c4) == NFKD(c4) else NFKD(c4) == NFKD(c5), line)
  83.         if part == '@Part1':
  84.             part1_data[c1] = 1
  85.             continue
  86.         verify
  87.     
  88.     for c in range(sys.maxunicode + 1):
  89.         X = unichr(c)
  90.         if X in part1_data:
  91.             continue
  92.         
  93.         None if NFC(X) == NFC(X) and NFD(X) == NFD(X) and NFKC(X) == NFKC(X) else X
  94.     
  95.     normalize('NFC', u'\xed\x95\x9c\xea\xb8\x80')
  96.  
  97. if __name__ == '__main__':
  98.     test_main()
  99.  
  100.